'use strict'

define([ 'jquery', 'bootstrap', 'select2', 'bodyform', 'shiftform', 'validate',
    'validate.en'], function($) {
  return {
    init : function() {
      this.initPage();
    },
    initPage : function() {
      
      var that = this;
      
      $(document).on("shown.bs.modal", "#editCompetencyEvaluation", function(e){
        $(".autosize-textarea").autosize();
        $('select.select2').select2({
          theme : "classic",
          placeholder : "please choose",
          minimumResultsForSearch : -1,
          allowClear : true,
        })
        $(e.currentTarget).find('form[data-validate="true"]').bt_validate()  //bind validate
        
        var $form = $(e.currentTarget).find("form")                          //bind shiftform
        $form.shiftform({
          beforeSubmit : function(el) {
            $form.trigger("validate.ajax.submit");
            return $.bt_validate.result[$.bt_validate.form_id]
          }
        })
      })
      
      $(document).on("shown.bs.modal", "#editReadinessRecommendation", function(e){
//         $('[data-toggle="popover"]').popover({
//           trigger: 'manual'
//         })
//         $(document).on("mouseout", '[type="submit"]', function() {
//           setTimeout(function(){
//             $('[data-toggle="popover"]').popover('hide')
//           }, 1500)
//         })
          
//        $("input[type='checkbox']").on("change", function(e) {
//        if($(this).prop("checked")) {
//          $(this).parents(".readiness-gruop").addClass("active");
//        } else {
//          $(this).parents(".readiness-gruop").removeClass("active");
//          $(this).parents(".readiness-gruop").find("select.select2").val();
//        }
//        })
        $(".autosize-textarea").autosize();
        $('select.select2').select2({
          theme : "classic",
          placeholder : "please choose",
          minimumResultsForSearch : -1,
          allowClear : true,
        })
//        
//        that.initChoose();
        
        $(e.currentTarget).find('form[data-validate="true"]').bt_validate()  //bind validate
        
        var $form = $(e.currentTarget).find("form")                          //bind shiftform
        $form.shiftform({
          beforeSubmit : function(el) {
//        	  var result = that.validateForm($form);
//              if(result) {
//                $form.trigger("validate.ajax.submit");
//                return $.bt_validate.result[$.bt_validate.form_id];
//              } else {
//                return result;
//              }
//            return that.validateForm();
            $form.trigger("validate.ajax.submit");
            return $.bt_validate.result[$.bt_validate.form_id]
          }
        })
      })
      
      $(document).on("shown.bs.modal", "#editDevelopmentRecommendations", function(e){
        var stengthData = that._generateSelectData("strong");
        var dnData = that._generateSelectData("weak");
        that.initSelect2(stengthData, dnData);
        that.initShowDetail();
        that.initChooseDevelopment();
        
        $(e.currentTarget).find('form[data-validate="true"]').bt_validate()  //bind validate
        
        var $form = $(e.currentTarget).find("form")                          //bind shiftform
        $form.shiftform({
          beforeSubmit : function(el) {
            var result = that.validateDevelopmentForm();
            if(result) {
              $form.trigger("validate.ajax.submit");
              return $.bt_validate.result[$.bt_validate.form_id];
            } else {
              return result;
            }
            /*$form.trigger("validate.ajax.submit");
            return $.bt_validate.result[$.bt_validate.form_id]*/
          }
        })
        
      })
      
      $(document).on("shown.bs.modal" , "#submit", function(e){
        $(e.currentTarget).find('form[data-validate="true"]').bt_validate()  //bind validate
        
        var $form = $(e.currentTarget).find("form")                          //bind shiftform
        $form.shiftform({
          beforeSubmit : function(el) {
            /*that.validateForm();*/
            
            $form.trigger("validate.ajax.submit");
            return $.bt_validate.result[$.bt_validate.form_id]
          }
        })
      })
      
    },
    
    initChoose: function() {
      $('[data-toggle="popover"]').popover({
        trigger: 'manual'
      })
      
      $(".readiness-wrap input[type='checkbox']").on("click", function(e) {
        
        var checkedIndex = $(".readiness-wrap input[type='checkbox']:checked").length;
        if($(this).data("type")=="notready" && $(this).prop("checked")) {
          checkedIndex = 0;
          $(".readiness-wrap .form-group").removeClass("active");
          $(".readiness-wrap .form-group input").prop("checked", false);
          $(this).prop("checked", true).parents(".form-group").addClass("active");
        } else if($(this).data("type")=="notready" && !$(this).prop("checked")) {
          $(this).parents(".form-group").removeClass("active");
        } else {
          $("input[data-type]").prop("checked", false).parents(".form-group").removeClass("active");
        }
        
        if(checkedIndex > 2) {
          $(this).prop("checked", false);
          
          $(this).parents(".col-xs-2").popover('show');
        } else {
          if($(this).prop("checked")) {
            $(this).parents(".form-group").addClass("active");
          } else {
            $(this).parents(".form-group").find("select").val(null).trigger("change");
            $(this).parents(".form-group").find(".comments-item textarea").val("");
            $(this).parents(".form-group").removeClass("active");
          }
        }
        
        $(document).on("mouseout", '[data-toggle="popover"]', function() {
          $('[data-toggle="popover"]').popover('hide')
        })
        
      })
    },
    
    initChooseDevelopment: function() {
    	$('[data-toggle="popover"]').popover({
        trigger: "manual"
      })
      
      $("input[name='choose']").each(function() {
        if(!$(this).prop("checked")) {
          $(this).parents(".col-xs-6").find("[name='chooseComment']").hide();
        } else {
          $(this).parents(".col-xs-6").find("[name='chooseComment']").show();
        }
      })
      
      $(document).on("change", "input[name='choose']", function() {
        var strengthLength = $("input[data-choose='strength']:checked").length;
        var developmentLength = $("input[data-choose='development']:checked").length;
       
        if($(this).prop("checked")) {
          if($(this).data("choose") =="strength" && strengthLength > 1) {
            $(this).parent("label").popover("show");
            $(this).prop({"checked": false})
            $(this).parents(".col-xs-6").find("[name='chooseComment']").hide();
          } else if($(this).data("choose") =="development" && developmentLength > 2) {
            $(this).prop({"checked": false})
            $(this).parent("label").popover("show");
            $(this).parents(".col-xs-6").find("[name='chooseComment']").hide();
          } else {
            $(this).parents(".col-xs-6").find("[name='chooseComment']").show();
          }
          
        } else {
          $(this).parents(".col-xs-6").find("[name='chooseComment']").hide();
        }
      })
      
      $(document).on("mouseout", "input[name='choose']", function() {
        $('[data-toggle="popover"]').popover('hide')
      })
    },
    
    validateForm: function($form) {
        var result = true;
        var length = $($form).find("input[type='checkbox']:checked").length;
        if(length == 0) {
          $($($form).find("input[type='checkbox']")[0]).parents(".col-xs-4").popover('show');
          result = false
        } else {
          
          $($form).find("input[type='checkbox']:checked").each(function(e) {
            var select2Value = $(this).parents(".readiness-gruop").find("select.select2").val();
            if(!select2Value) {
              $(this).parents(".readiness-gruop").find("select.select2").show_tooltip($.bt_validate.text.required, 'remove', '#F2DEDE', '#EBCCD1', '#B94A48');
              result = false;
            }
          })
        }
        return result
      },
    
//    validateForm: function() {
//      var selectVal = [];
//      var index =0;
//      $(".readiness-gruop.active").each(function(index) {
//        index = index;
//        selectVal.push($(this).find(".select2").val().trim(),$(this).find("textarea").val().trim() )
//      })
//      for(var i = 0; i<selectVal.length; i++ ) {
//        if(!selectVal[i]) {
//          $(".validate-modal").modal('show');
//          setTimeout(function() {
//            $(".validate-modal").modal('hide');
//          },1500)
//          return false;
//        } else {
//          return true;
//        }
//      }
//    },
    
    validateDevelopmentForm: function() {
        $(document).on("mouseout", "input[name='choose']", function() {
          $('[data-toggle="popover"]').popover('hide')
        })
        var result = true;
    	var strengthLength = $("input[data-choose='strength']:checked").length;
        var developmentLength = $("input[data-choose='development']:checked").length;
       
          if(strengthLength > 1) {
            $('.strongOne label').popover("show");
            result = false;
          } else if(developmentLength > 2) {
            $('.dnOne label').popover("show");
            result = false;
          }
        
//      var strengthVal = $("input[data-choose='strength']:checked").parents(".col-xs-6").find("[name='chooseComment']").val();
//      
//      if(!strengthVal) {
//        $(".validate-modal").modal('show')
//        setTimeout(function() {
//          $(".validate-modal").modal('hide')
//        },1000)
//        return false;
//      }
//       
//      $("input[data-choose='development']:checked").each(function() {
//        if(!$(this).parents(".col-xs-6").find("[name='chooseComment']").val().trim()) {
//          $(".validate-modal").modal('show');
//          $(".validate-modal").modal('show')
//          setTimeout(function() {
//            (".validate-modal").modal('hide')
//          },1000)
//          return false;
//        }
//      })
      
      return result;
    },
    
    initSelect2: function(stengthData, dnData) {
      var that = this;
      $('select.select2').select2({
        theme : "classic",
        placeholder : $(this).data("placeholder"),
        minimumResultsForSearch : -1,
        allowClear : true,
      }).on('change', function() {
        if(this.value) {
          var name = $(this).attr('name');
          var comment = $('textarea[name="'+ name + 'Comment"]').val();
          var select2Data = name.indexOf("strength") >= 0 ? that._calculateSelect2(stengthData, $(this).find(":selected").data("name")) : that._calculateSelect2(dnData, $(this).find(":selected").data("name"))
          $(this).parent().next().find("input[name='choose']").val(this.value);
          if(this.value != 'OTHER') {
        	  $('input[name="'+ name + 'Title"]').select2({
                  placeholder : $(this).data("placeholder"),
                  minimumResultsForSearch : -1,
                  allowClear : true,
                  data: function() { return {results: select2Data}; }
                }).unbind('change').on('change', function(){
                  if(this.value == 'other') {
//                    $(this).after('<input type="text" name="'+name+'Other" class="form-control" style="margin-top: 10px;" placeholder="other title" />');
//                    $('textarea[name="'+ name + 'Comment"]').val('');
                  } else {
                	if(!comment) {
                		$('textarea[name="'+ name + 'Comment"]').val(that._generateDevelopmentTextarea(name));
                	}
                  }
                  $(this).select2('destroy');
                  that.editSelect2(this, stengthData, dnData);
                });
          } else {
        	  var titlePlaceholder = $('input[name="'+ name + 'Title"]').data("placeholder");
        	  $('input[name="'+ name + 'Title"]').val("").attr("placeholder", titlePlaceholder);
        	  $('input[name="'+ name + 'Title"]').select2('destroy');
          }
          if(!comment) {
        	  $('textarea[name="'+ name + 'Comment"]').val(that._generateDevelopmentTextarea(name));
          }
          $('input[name="'+ name + 'Title"]').select2('val', '').removeClass("hide");
        } else {
//          $('textarea[name="'+ name + 'Comment"]').val('');
//          $('textarea[name="'+ name + 'Other"]').remove();
          $('input[name="'+ name + 'Title"]').select2('val', '').addClass("hide");
        }
      });
      
    },
    
    editSelect2: function(el, stengthData, dnData) {
        var that = this;
        $(el).on("change", function(e){
          if($(this).val() == '') {
            var $select2 = $(this).prev();
            var name = $($select2).attr('name');
            var comment = $('textarea[name="'+ name + 'Comment"]').val();
            var select2Data =  name.indexOf("strength") >= 0 ? that._calculateSelect2(stengthData, $(this).find(":selected").data("name")) : that._calculateSelect2(dnData, $(this).find(":selected").data("name"))
            $($select2).parent().next().find("input[name='choose']").val($select2.val());
            $('input[name="'+ name + 'Title"]').select2({
              placeholder : $(this).data("placeholder"),
              minimumResultsForSearch : -1,
              allowClear : true,
              data: function() { return {results: select2Data}; }
            }).unbind('change').on('change', function(){
              if(this.value == 'other') {
//                $(this).after('<input type="text" name="'+name+'Other" class="form-control" style="margin-top: 10px;" placeholder="other title" />');
//                $('textarea[name="'+ name + 'Comment"]').val('');
              } else {
//                $('input[name="'+name+'Other"]').remove();
            	  if(!comment) {
            		  $('textarea[name="'+ name + 'Comment"]').val(that._generateDevelopmentTextarea(name));
            	  }
              }
              $(this).select2('destroy');
              that.editSelect2(this);
            });
          }
        })
      },
    
      _generateSelectData : function(classes) {
          var data = {};
          $(".messages").find("div."+classes).each(function(){
            var key = $(this).data("com");
            var values = [];
            $(this).find("div.anchor").each(function(){
              var anchorJson = {};
              $(this).find("input").each(function() {
                anchorJson[$(this).attr("name")] = $(this).val();
              })
              values.push(anchorJson);
            })
            data[key] = values;
          })
          return data;
        },
    
    _calculateSelect2(data, key) {
      var arrays = data[key];
      var result = [];
      for(var item in arrays) {
        var value = {};
        value['id']=arrays[item].name;
        value['text']=arrays[item].name;
        result.push(value)
      }
      result.push({'id': 'other', 'text': 'other'})
      return result;
    },
    
    _generateDevelopmentTextarea(name) {
        var key = $("select[name='"+name+"'] option:checked").data("name");
        var text = name.indexOf("strength") >= 0 ? $("div.strong[data-com='"+key+"']").data("effective") : $("div.weak[data-com='"+key+"']").data("ineffective"); 
        console.log(text);
        return text;
      },
    
    _generateTextarea(value) {
      var $parent = $('input[value="'+value+'"]').parent();
      var score = $parent.find("input[name='score']").val().toLowerCase();
      var text = $parent.find("input[name='"+score+"Desc']").val();
      console.log(text);
      return text;
    },
    
    initShowDetail: function() {
      $(document).on('click', '.anchor-link', function(e) {
        var currentIndex = $(e.currentTarget).data("option");
        $(".scoring-details").eq(currentIndex).show().siblings().hide();
      })
      
      $(document).on('click', '.close-details', function(e) {
        $(".scoring-details").hide();
      })
    }
  }
})
